iT邦幫忙

2021 iThome 鐵人賽

DAY 15
1
DevOps

這個 site 就是遜啦 - SRE 30 天登大人之旅系列 第 15

Day 15:目前 NOJ 的部署流程

  • 分享至 

  • xImage
  •  

本來今天是要講完 Grafana 的部分,不過我發現我還是來不及做完...目前的進度只有下面這樣,我認為還缺了點東西,看看明天能不能處理完吧。

所以今天我想來講講其他的主題,有關目前 NOJ 部署上,我認為的一些問題以及可能的改善方向。

目前的情況是我們會把整個 repo 放在 server 上面,每當需要更新的時候就上去 build docker image 以及把 container 跑起來。因為有些設定是無法公開的,像是 JWT 使用的 secret、沙盒使用的 token 等等,加上我們那時候對於這些 credential 的管理並不熟悉,所以我們是把這些東西直接寫進 docker-compose.prod.yml 這個生產環境使用的設定檔,並且避免它們進版控。(實際上還有一些其他檔案也是啦...)

這樣子的做法我想會有幾個問題,首先第一個是這樣的流程容易引入人為的變更,而導致我們不好確定目前運行的服務是什麼狀態,以過去的經驗來看,因為 code 就在那邊嘛...所以有時候就會有直接在 server 上 hotfix 之後部署下去的狀況,在這種情況下,就導致了這些修復不會即時的被 commit。雖然說這當然可以透過規範大家不要修改上面的 code 來解決,但若是可以從根本上杜絕,也就是不要在 server 上面放 code,而是在 CI 流程中 build image 再部署。

另外一個問題是,因為我們姑且也算是開源專案嘛(雖然我覺得還有許多問題要解決),若是要讓其他人也可以正常的部署的話,那麼那些正式環境的設定也應該要可以進到版控裡面才對,而 secret 的部分讓不同的人可以去替換掉。可是以目前的設計來說它們是綁在一起的,並沒有分開,所以暫時做不到。

其他多少還有一些小問題,都容易導致整個服務的狀態變得不穩定,進而導致維運的困難,所以我的短期目標,應是要讓正式環境的設定檔也可以進版控吧。


上一篇
Day 14:Load testing
下一篇
Day 16:架設 Grafana (2)
系列文
這個 site 就是遜啦 - SRE 30 天登大人之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言